简单十步实现PsychoPy的线上实验模式
The following article is from Ryan聊心理 Author Ryan11
Hello,
这里是行上行下,我是喵君姐姐~
目前受新冠肺炎的影响,学校推迟开学,很多小伙伴的论文实验没办法照常开展。
所以是否可以通过线上来做实验呢?
答案是当然可以!
但是具体应该如何操作,才能够把实验程序放到Pavlovia上,通过链接分享给研究参与者进行实验呢?
下面就邀请Ryan针对“如何使用PsychoPy的线上实验模式”进行详细讲解哟~
在前几期,我们进行了第0期:psychopy coder入门、第1期 | psychopy:数据类型及运算符、Psychopy | 第2期:从Stroop看条件与循环的讲解。
许久之前的推送中,Ryan也有介绍过《PsychoPy的线上实验模式》,之后大家做了简单了解,但并未深入测试和使用。
随后Ryan也测试传了程序上去,实际操作了一下,接下来就详细介绍如何才能通过十步顺利的完成一个线上实验的上传和分享。
首先,先简单介绍下Pavlovia线上实验的原理,整个线上实验读取的其实是一个JavaScript文件或者HTML,这样才能让实验程序摆脱所用的编程软件(像PsychoPy,E-prime或者MATLAB)在浏览器中跑起来。
所以,在Pavlovia的介绍中也提到,他们支持的只有通过PsychoPy生成的HTML或者另一个叫做lab.js的软件制作的实验程序以及用jsPsych这个包写的HTML。
lab.js网址:https://lab.js.org/
jsPsych网址:https://www.jspsych.org/
所以,第一步,开始操作的前提是,如果没有另两种方式写的程序,那就需要拥有一个使用PsychoPy的Builder模式编写好的实验程序。
注意,此处必须是使用Builder模式编写的程序才能够放到线上进行,因为从python代码到JavaScript的转换,是依据builder中各个组件和逻辑来做的,开发者在论坛中也有提到,如果要把大家自己写的python代码自动做转换,“It would take a lot of artificial intelligence”。
此处,以之前写过的《PsychoPy中的鼠标点击》程序为例,来进行接下来的操作。
第二步,需要在Pavlovia上拥有一个注册好的账号(https://pavlovia.org/),这个注册好的账号也同时会是你的Gitlab账号;
第三步,访问Git的网站,下载Git工具,因为上传和同步都需要通过Git来进行,下载地址是:https://git-scm.com/,选择合适的操作系统(支持Windows,Mac,Linux/Unix)。
在电脑中提前下载安装好即可。若没有提前安装Git,在第七步点击后会出现如下弹窗,提示没有Git无法顺利使用Pavlovia创建项目;
第五步,点击file - export HTML,程序会自动生成PsychoJS的代码,将PsychoPy的实验程序生成HTML,成功之后,文件夹中会出现一个html的子文件夹;
第六步,点击新建,上传实验到Pavlovia;
第七步,在弹出的窗口中,输入好实验的名字和相关说明(这里写的说明是支持中文的,但是如果希望在Pavlovia的explore中搜索到你的实验,需要用英语)。
需要注意的是,在local folder中选中的文件夹,必须包含实验所需的所有材料(图片、声音、视频…以及trial信息的Excel等),此文件夹中的所有文件都会被上传。也需要勾选上public,填写完成点击创建;
第八步,等待Git完成文件上传,上传成功后,在弹出的窗口中会显示success;
第九步,此时,切换到Pavlovia,找到dashboard - experiment,就能在列表中看到刚才上传的实验了。此时该实验的状态为inactive;
第十步,点击打开上传好的实验,可以看到如下界面,在界面上可以切换实验的状态为piloting或者running,去测试实验或者发布运行;
关于piloting,点击之后界面刷新,此时可以看到pilot的按钮被激活,点击会跳转到一个网页链接,使用该链接就可以测试这个实验程序了。
在实验结束之后,该次实验的数据文件自动下载保存。
这个网页链接包含了一个pilotToken和一个oauthToken,将该链接发给别人,也可以在别人的电脑上进行测试,不过Token的有效期只有一个小时,时间过去后,需要重新点击pilot按钮生成新的测试链接。
测试成功之后,点击running切换到正式实验的状态。此时,就需要有Pavlovia的credits才能给别人做你的实验。
如果已经购买好credits,那么在下方的滑块上为这个实验分配好相应数量的credits,点击update assigned credits后,run的按钮才会被激活。
实验被激活后,在右侧会生成实验的URL,将这个URL链接发给研究参与者,他们通过浏览器打开链接后,就可以实现远程的线上实验了。
再讲一下第十步,如何在Pavlovia中充值credits。
点击store,能够看到Pavlovia有两种充值模式,一种是单次实验的收费,一种是机构的通用license。
单次实验£0.2一个被试,大概人民币1.8元左右,充值永久有效,适合需要做实验的同学充值使用,一次性充500credits以上多送10%。
机构的license£1500,大概人民币1.35万左右,有效期一年,适合(经费充足且喜欢用线上实验的)学校或者实验室采购。
以上就是使用Pavlovia平台做线上实验的详细步骤了。
以下再说一些注意事项:
1. 标记为pilot状态的实验,即便是从explore中搜索到,直接点击也无法进行测试。只有实验的拥有者能够从自己的账号里,该实验的详情页点击pilot按钮进行测试(或者是点击后一小时内将链接分享给他人测试)。
2. 切换到run状态时,如果没有为实验分配credits,也会有实验的链接生成,但是是无效的,因为没有分配credits,系统就没有生成正式实验的Token,没有Token就无法进行实验。
3. 正式实验的Token只能被使用一次,若是实验的Token被打开过,该Token就会失效,即便没有做完,重新打开一次实验,也会继续扣除credit生成新的Token进行实验。所以务必注意,将链接发出后,最好是请研究参与者复制到电脑的浏览器打开,并且网络环境较好(因为需要从Gitlab上下载JavaScript文件)。
4. 可能会有朋友比较好奇用手机能否进行线上实验,Ryan的答案是可以。不过仅限于使用鼠标点击的实验,因为键盘无法弹出。当然最好还是用电脑浏览器进行实验,用手机可能会涉及到横竖屏显示,延迟和采样精度等等问题限制,还需进一步探究。
5. 线上实验,数据的有效率肯定是不如线下实验室环境收集的那么高,所以建议想使用它做线上实验的同学,充值的时候可以多充一点,留有富余,以防万一。不过也不要充得过多,目前平台没有credits的转让功能,如果浪费就有点可惜了。
6. 如果pilot后发现实验有问题,在PsychoPy中进行修改后,也需要重新点击生成HTML,并且通过Pavlovia.org - Sync进行同步,同步之后,Pavlovia上即是更新过的实验程序了。
首先,关于Pavlovia线上实验模式的使用,总结了以上九步,遵循这个步骤进行设置,应该就能正常使用功能了。如果有报错,或是新的注意事项,也请在留言区、公众号后台告知,帮助更多的朋友更好的使用它,谢谢!
其次,关于线上做实验,肯定承担的风险和不可控因素也比较多。在正式实验之前,最好进行预注册,并且只是在线上做预实验比较保险,万一程序崩溃了呢。正式实验,最好还是在实验室里做比较好哟。也欢迎大家留言区讨论“线上线下实验”相关问题哈~
最后,PsychoPy需要编程基础,学习成本还是比较高;此外也需要付费,而且国内的卡不能够用;稳定性的话有待测量,希望有经验的小伙伴也能够分享一下相关经验哟~
【1】lab.js软件:https://lab.js.org/
【2】jsPsych包:https://www.jspsych.org/
【4】Git工具下载网站:https://git-scm.com/